package Modelo;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;

public class Validaciones {

    public static String getFechaActual() {
        Date ahora = new Date();
        SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yyyy");
        return formateador.format(ahora);
    }

    public static boolean isDate(String fechax) {
        try {
            SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
            formatoFecha.setLenient(false);
            formatoFecha.parse(fechax);
            return true;
        } catch (ParseException e) {
            return false;
        }

    }

    //----------------------------------------
    public static Date CnvStringFecha(String fecha) {
        SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
        Date fechaDate = null;
        try {
            fechaDate = formato.parse(fecha);
        } catch (ParseException ex) {
            System.out.println(ex);
        }
        return fechaDate;
    }
    public static Date CnvStringFecha2(String fecha) {
        SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd");
        Date fechaDate = null;
        try {
            fechaDate = formato.parse(fecha);
        } catch (ParseException ex) {
            System.out.println(ex);
        }
        return fechaDate;
    }
//------------------------------------------ 

    public static int Generar_Aleatorio(int limite) {
        return (int) (Math.random() * limite + 1) - 1;
    }
//----------------------------------------

    public static Date sumarFechasDias(Date fch, int dias) {
        Calendar cal = new GregorianCalendar();
        cal.setTimeInMillis(fch.getTime());
        cal.add(Calendar.DATE, dias);
        return new java.sql.Date(cal.getTimeInMillis());
    }
//--------------------------------------------------------------------

    public static Date sumarRestarHorasFecha(Date fecha, int horas) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(fecha); // Configuramos la fecha que se recibe
        calendar.add(Calendar.HOUR, horas);  // numero de horas a añadir, o restar en caso de horas<0
        return calendar.getTime(); // Devuelve el objeto Date con las nuevas horas añadidas
    }

    public static String sumarDiasHorasMinutos(String hora, int dias, int horas, int min) {
        String[] dato;
        int d, h, m;
        dato = hora.split(": ");
        d = Integer.parseInt(dato[0]);
        h = Integer.parseInt(dato[2]);
        m = Integer.parseInt(dato[3]);

        if (min + m > 60) {
        }
        return dato[3];
    }

    public static String obtenerDiaSemana(Date Fecha) {
        String[] dias = {"Domingo",
            "Lunes",
            "Martes",
            "Miércoles",
            "Jueves",
            "Viernes",
            "Sábado"};

        int numeroDia = 0;

        Calendar cal = Calendar.getInstance();
        cal.setTime(Fecha);
        numeroDia = cal.get(Calendar.DAY_OF_WEEK);

        return dias[numeroDia - 1];
    }

    public static String DiaSemana(String Fecha) {
        int dia, mes, año, año1, semana, x, añobici, y, z, total, u, j;
        int PosRaya;
        String DiaSt, MesSt, AnoSt;

        PosRaya = Fecha.indexOf("-");
        if (PosRaya == -1) {
            PosRaya = Fecha.indexOf("/");
        }

        DiaSt = Fecha.substring(0, PosRaya);
        dia = Integer.parseInt(DiaSt);

        Fecha = Fecha.substring(PosRaya + 1, Fecha.length());
        PosRaya = Fecha.indexOf("-");
        if (PosRaya == -1) {
            PosRaya = Fecha.indexOf("/");
        }


        MesSt = Fecha.substring(0, PosRaya);
        mes = Integer.parseInt(MesSt);

        Fecha = Fecha.substring(PosRaya + 1, Fecha.length());
        AnoSt = Fecha;
        año = Integer.parseInt(AnoSt);

        semana = 0;

        if ((año / 100) % 4 == 1) {
            x = semana + 5;
        } else if ((año / 100) % 4 == 2) {
            x = semana + 3;
        } else if ((año / 100) % 4 == 3) {
            x = semana + 1;
        } else if ((año / 100) % 4 == 0) {
            x = semana + 0;
        } else {
            x = 0;
        }
        j = 0;
        z = 0;
        año1 = (año % 100) + ((año % 100) / 4);
        y = 0;

        if (año % 400 == 0 && año % 100 != 0 && año % 4 == 0) {
            if (mes == 1 || mes == 2) {
                j = z - 1;
            } else {
                j = z + 0;
            }
        }

        if (mes == 8) {
            u = y + 1;
        } else if (mes == 2 || mes == 3 || mes == 11) {
            u = y + 2;
        } else if (mes == 6) {
            u = y + 3;
        } else if (mes == 9 || mes == 12) {
            u = y + 4;
        } else if (mes == 4 || mes == 7) {
            u = y + 5;
        } else if (mes == 1 || mes == 10) {
            u = y + 6;
        } else {
            u = y + 0;
        }

        total = x + y + z + año1 + u + dia + j;


        if (total % 7 == 1) {
            return "Lunes";
        } else if (total % 7 == 2) {
            return "Martes";
        } else if (total % 7 == 3) {
            return "Miercoles";
        } else if (total % 7 == 4) {
            return "Jueves";
        } else if (total % 7 == 5) {
            return "Viernes";
        } else if (total % 7 == 6) {
            return "Sabado";
        } else {
            return "Domingo";
        }

    }
  //--------------------------------------
    public static String Apost(String Texto) 
    {
        return "'"+Texto+"'";
    }
    
}
